home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 February: Tool Chest / Dev.CD Feb 95 / Dev.CD Feb 95.toast / Tool Chest / Interfaces / Universal Interfaces 2.0a3 / Universal AIncludes / Memory.a < prev    next >
Encoding:
Text File  |  1994-11-11  |  10.4 KB  |  723 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        Memory.a
  3. ;
  4. ;    Copyright:    © 1984-1994 by Apple Computer, Inc.
  5. ;                All rights reserved.
  6. ;
  7. ;    Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8. ;
  9. ;    Bugs?:        If you find a problem with this file, send the file and version
  10. ;                information (from above) and the problem description to:
  11. ;
  12. ;                    Internet:    apple.bugs@applelink.apple.com
  13. ;                    AppleLink:    APPLE.BUGS
  14. ;
  15. ;
  16.  
  17.     IF &TYPE('__MEMORY__') = 'UNDEFINED' THEN
  18. __MEMORY__ SET 1
  19.  
  20.  
  21.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  22.     include 'Types.a'
  23.     ENDIF
  24. ;        include 'ConditionalMacros.a'                                ;
  25.  
  26.     IF &TYPE('__MIXEDMODE__') = 'UNDEFINED' THEN
  27.     include 'MixedMode.a'
  28.     ENDIF
  29.  
  30. maxSize                            EQU        $800000                ;Max data block size is 8 megabytes
  31. defaultPhysicalEntryCount        EQU        8
  32. ; values returned from the GetPageState function 
  33. kPageInMemory                    EQU        0
  34. kPageOnDisk                        EQU        1
  35. kNotPaged                        EQU        2
  36.  
  37. ; masks for Zone->heapType field 
  38. k32BitHeap                        EQU        1                    ; valid in all Memory Managers 
  39. kNewStyleHeap                    EQU        2                    ; true if new Heap Manager is present 
  40. kNewDebugHeap                    EQU        4                    ; true if new Heap Manager is running in debug mode on this heap 
  41.  
  42. ; size of a block in bytes 
  43. Zone                     RECORD    0
  44. bkLim                     ds.l    1
  45. purgePtr                 ds.l    1
  46. hFstFree                 ds.l    1
  47. zcbFree                     ds.l    1
  48. gzProc                     ds.l    1
  49. moreMast                 ds.w    1
  50. flags                     ds.w    1
  51. cntRel                     ds.w    1
  52. maxRel                     ds.w    1
  53. cntNRel                     ds.w    1
  54. heapType                 ds.b    1
  55. unused                     ds.b    1
  56. cntEmpty                 ds.w    1
  57. cntHandles                 ds.w    1
  58. minCBFree                 ds.l    1
  59. purgeProc                 ds.l    1
  60. sparePtr                 ds.l    1
  61. allocPtr                 ds.l    1
  62. heapData                 ds.w    1
  63. sizeof                     EQU    54
  64.                         ENDR
  65.  
  66. MemoryBlock             RECORD    0
  67. address                     ds.l    1
  68. count                     ds.l    1
  69. sizeof                     EQU    8
  70.                         ENDR
  71.  
  72. LogicalToPhysicalTable     RECORD    0
  73. logical                     ds        MemoryBlock
  74. physical                 ds        MemoryBlock
  75. sizeof                     EQU    16
  76.                         ENDR
  77.  
  78.     IF GENERATING68K THEN
  79.         Macro
  80.         GetApplLimit
  81.             move.L $0130,(sp)
  82.         EndM
  83.     ELSE
  84.         IMPORT    GetApplLimit
  85.     ENDIF
  86.  
  87.     IF GENERATING68K THEN
  88.         Macro
  89.         SystemZone
  90.             move.L $02A6,(sp)
  91.         EndM
  92.     ELSE
  93.         IMPORT    SystemZone
  94.     ENDIF
  95.  
  96.     IF GENERATING68K THEN
  97.         Macro
  98.         ApplicationZone
  99.             move.L $02AA,(sp)
  100.         EndM
  101.     ELSE
  102.         IMPORT    ApplicationZone
  103.     ENDIF
  104.  
  105.     IF GENERATING68K THEN
  106.         Macro
  107.         GZSaveHnd
  108.             move.L $0328,(sp)
  109.         EndM
  110.     ELSE
  111.         IMPORT    GZSaveHnd
  112.     ENDIF
  113.  
  114.     IF GENERATING68K THEN
  115.         Macro
  116.         TopMem
  117.             move.L $0108,(sp)
  118.         EndM
  119.     ELSE
  120.         IMPORT    TopMem
  121.     ENDIF
  122.  
  123.     IF GENERATING68K THEN
  124.         Macro
  125.         MemError
  126.             move.W $0220,(sp)
  127.         EndM
  128.     ELSE
  129.         IMPORT    MemError
  130.     ENDIF
  131.  
  132.     IF GENERATING68K THEN
  133.         _GetZone:    OPWORD    $A11A
  134.     ELSE
  135.         IMPORT    GetZone
  136.     ENDIF
  137.  
  138.     IF GENERATING68K THEN
  139.         _NewHandle:    OPWORD    $A122
  140.     ELSE
  141.         IMPORT    NewHandle
  142.     ENDIF
  143.  
  144.     IF GENERATING68K THEN
  145.         _NewHandleSys:    OPWORD    $A522
  146.     ELSE
  147.         IMPORT    NewHandleSys
  148.     ENDIF
  149.  
  150.     IF GENERATING68K THEN
  151.         _NewHandleClear:    OPWORD    $A322
  152.     ELSE
  153.         IMPORT    NewHandleClear
  154.     ENDIF
  155.  
  156.     IF GENERATING68K THEN
  157.         _NewHandleSysClear:    OPWORD    $A722
  158.     ELSE
  159.         IMPORT    NewHandleSysClear
  160.     ENDIF
  161.  
  162.     IF GENERATING68K THEN
  163.         _HandleZone:    OPWORD    $A126
  164.     ELSE
  165.         IMPORT    HandleZone
  166.     ENDIF
  167.  
  168.     IF GENERATING68K THEN
  169.         _RecoverHandle:    OPWORD    $A128
  170.     ELSE
  171.         IMPORT    RecoverHandle
  172.     ENDIF
  173.  
  174.     IF GENERATING68K THEN
  175.         _RecoverHandleSys:    OPWORD    $A528
  176.     ELSE
  177.         IMPORT    RecoverHandleSys
  178.     ENDIF
  179.  
  180.     IF GENERATING68K THEN
  181.         _NewPtr:    OPWORD    $A11E
  182.     ELSE
  183.         IMPORT    NewPtr
  184.     ENDIF
  185.  
  186.     IF GENERATING68K THEN
  187.         _NewPtrSys:    OPWORD    $A51E
  188.     ELSE
  189.         IMPORT    NewPtrSys
  190.     ENDIF
  191.  
  192.     IF GENERATING68K THEN
  193.         _NewPtrClear:    OPWORD    $A31E
  194.     ELSE
  195.         IMPORT    NewPtrClear
  196.     ENDIF
  197.  
  198.     IF GENERATING68K THEN
  199.         _NewPtrSysClear:    OPWORD    $A71E
  200.     ELSE
  201.         IMPORT    NewPtrSysClear
  202.     ENDIF
  203.  
  204.     IF GENERATING68K THEN
  205.         _PtrZone:    OPWORD    $A148
  206.     ELSE
  207.         IMPORT    PtrZone
  208.     ENDIF
  209.  
  210.     IF GENERATING68K THEN
  211.         _MaxBlock:    OPWORD    $A061
  212.     ELSE
  213.         IMPORT    MaxBlock
  214.     ENDIF
  215.  
  216.     IF GENERATING68K THEN
  217.         _MaxBlockSys:    OPWORD    $A461
  218.     ELSE
  219.         IMPORT    MaxBlockSys
  220.     ENDIF
  221.  
  222.     IF GENERATING68K THEN
  223.         _StackSpace:    OPWORD    $A065
  224.     ELSE
  225.         IMPORT    StackSpace
  226.     ENDIF
  227.  
  228.     IF GENERATING68K THEN
  229.         _NewEmptyHandle:    OPWORD    $A166
  230.     ELSE
  231.         IMPORT    NewEmptyHandle
  232.     ENDIF
  233.  
  234.     IF GENERATING68K THEN
  235.         _NewEmptyHandleSys:    OPWORD    $A566
  236.     ELSE
  237.         IMPORT    NewEmptyHandleSys
  238.     ENDIF
  239.  
  240.     IF GENERATING68K THEN
  241.         _HLock:    OPWORD    $A029
  242.     ELSE
  243.         IMPORT    HLock
  244.     ENDIF
  245.  
  246.     IF GENERATING68K THEN
  247.         _HUnlock:    OPWORD    $A02A
  248.     ELSE
  249.         IMPORT    HUnlock
  250.     ENDIF
  251.  
  252.     IF GENERATING68K THEN
  253.         _HPurge:    OPWORD    $A049
  254.     ELSE
  255.         IMPORT    HPurge
  256.     ENDIF
  257.  
  258.     IF GENERATING68K THEN
  259.         _HNoPurge:    OPWORD    $A04A
  260.     ELSE
  261.         IMPORT    HNoPurge
  262.     ENDIF
  263.  
  264.     IF GENERATING68K THEN
  265.         Macro
  266.         _HLockHi
  267.             dc.w     $A064
  268.             dc.w     $A029
  269.         EndM
  270.     ELSE
  271.         IMPORT    HLockHi
  272.     ENDIF
  273.  
  274.     IF GENERATING68K THEN
  275.         Macro
  276.         _TempNewHandle
  277.             move.w    #$001D,-(sp)
  278.             dc.w     $A88F
  279.         EndM
  280.     ELSE
  281.         IMPORT    TempNewHandle
  282.     ENDIF
  283.  
  284.     IF GENERATING68K THEN
  285.         Macro
  286.         _TempMaxMem
  287.             move.w    #$0015,-(sp)
  288.             dc.w     $A88F
  289.         EndM
  290.     ELSE
  291.         IMPORT    TempMaxMem
  292.     ENDIF
  293.  
  294.     IF GENERATING68K THEN
  295.         Macro
  296.         _TempFreeMem
  297.             move.w    #$0018,-(sp)
  298.             dc.w     $A88F
  299.         EndM
  300.     ELSE
  301.         IMPORT    TempFreeMem
  302.     ENDIF
  303.  
  304. ;  Temporary Memory routines renamed, but obsolete, in System 7.0 and later.  
  305.     IF GENERATING68K THEN
  306.         Macro
  307.         _TempHLock
  308.             move.w    #$001E,-(sp)
  309.             dc.w     $A88F
  310.         EndM
  311.     ELSE
  312.         IMPORT    TempHLock
  313.     ENDIF
  314.  
  315.     IF GENERATING68K THEN
  316.         Macro
  317.         _TempHUnlock
  318.             move.w    #$001F,-(sp)
  319.             dc.w     $A88F
  320.         EndM
  321.     ELSE
  322.         IMPORT    TempHUnlock
  323.     ENDIF
  324.  
  325.     IF GENERATING68K THEN
  326.         Macro
  327.         _TempDisposeHandle
  328.             move.w    #$0020,-(sp)
  329.             dc.w     $A88F
  330.         EndM
  331.     ELSE
  332.         IMPORT    TempDisposeHandle
  333.     ENDIF
  334.  
  335.     IF GENERATING68K THEN
  336.         Macro
  337.         _TempTopMem
  338.             move.w    #$0016,-(sp)
  339.             dc.w     $A88F
  340.         EndM
  341.     ELSE
  342.         IMPORT    TempTopMem
  343.     ENDIF
  344.  
  345.     IF GENERATING68K THEN
  346.         _InitApplZone:    OPWORD    $A02C
  347.     ELSE
  348.         IMPORT    InitApplZone
  349.     ENDIF
  350.  
  351.     IF GENERATING68K THEN
  352.         _SetZone:    OPWORD    $A01B
  353.     ELSE
  354.         IMPORT    SetZone
  355.     ENDIF
  356.  
  357.     IF GENERATING68K THEN
  358.         _CompactMem:    OPWORD    $A04C
  359.     ELSE
  360.         IMPORT    CompactMem
  361.     ENDIF
  362.  
  363.     IF GENERATING68K THEN
  364.         _CompactMemSys:    OPWORD    $A44C
  365.     ELSE
  366.         IMPORT    CompactMemSys
  367.     ENDIF
  368.  
  369.     IF GENERATING68K THEN
  370.         _PurgeMem:    OPWORD    $A04D
  371.     ELSE
  372.         IMPORT    PurgeMem
  373.     ENDIF
  374.  
  375.     IF GENERATING68K THEN
  376.         _PurgeMemSys:    OPWORD    $A44D
  377.     ELSE
  378.         IMPORT    PurgeMemSys
  379.     ENDIF
  380.  
  381.     IF GENERATING68K THEN
  382.         _FreeMem:    OPWORD    $A01C
  383.     ELSE
  384.         IMPORT    FreeMem
  385.     ENDIF
  386.  
  387.     IF GENERATING68K THEN
  388.         _FreeMemSys:    OPWORD    $A41C
  389.     ELSE
  390.         IMPORT    FreeMemSys
  391.     ENDIF
  392.  
  393.     IF GENERATING68K THEN
  394.         _ReserveMem:    OPWORD    $A040
  395.     ELSE
  396.         IMPORT    ReserveMem
  397.     ENDIF
  398.  
  399.     IF GENERATING68K THEN
  400.         _ReserveMemSys:    OPWORD    $A440
  401.     ELSE
  402.         IMPORT    ReserveMemSys
  403.     ENDIF
  404.  
  405.     IF GENERATING68K THEN
  406.         Macro
  407.         _MaxMem
  408.             dc.w     $A11D
  409.             dc.w     $2288
  410.         EndM
  411.     ELSE
  412.         IMPORT    MaxMem
  413.     ENDIF
  414.  
  415.     IF GENERATING68K THEN
  416.         Macro
  417.         _MaxMemSys
  418.             dc.w     $A51D
  419.             dc.w     $2288
  420.         EndM
  421.     ELSE
  422.         IMPORT    MaxMemSys
  423.     ENDIF
  424.  
  425.     IF GENERATING68K THEN
  426.         _SetGrowZone:    OPWORD    $A04B
  427.     ELSE
  428.         IMPORT    SetGrowZone
  429.     ENDIF
  430.  
  431.     IF GENERATING68K THEN
  432.         _SetApplLimit:    OPWORD    $A02D
  433.     ELSE
  434.         IMPORT    SetApplLimit
  435.     ENDIF
  436.  
  437.     IF GENERATING68K THEN
  438.         _MoveHHi:    OPWORD    $A064
  439.     ELSE
  440.         IMPORT    MoveHHi
  441.     ENDIF
  442.  
  443.     IF GENERATING68K THEN
  444.         _DisposePtr:    OPWORD    $A01F
  445.     ELSE
  446.         IMPORT    DisposePtr
  447.     ENDIF
  448.  
  449.     IF GENERATING68K THEN
  450.         _SetPtrSize:    OPWORD    $A020
  451.     ELSE
  452.         IMPORT    SetPtrSize
  453.     ENDIF
  454.  
  455.     IF GENERATING68K THEN
  456.         _DisposeHandle:    OPWORD    $A023
  457.     ELSE
  458.         IMPORT    DisposeHandle
  459.     ENDIF
  460.  
  461.     IF GENERATING68K THEN
  462.         _SetHandleSize:    OPWORD    $A024
  463.     ELSE
  464.         IMPORT    SetHandleSize
  465.     ENDIF
  466.  
  467.     IF GENERATING68K THEN
  468.         _InlineGetHandleSize:    OPWORD    $A025
  469.     ELSE
  470.         IMPORT    InlineGetHandleSize
  471.     ENDIF
  472.  
  473.     IF GENERATING68K THEN
  474.         _ReallocateHandle:    OPWORD    $A027
  475.     ELSE
  476.         IMPORT    ReallocateHandle
  477.     ENDIF
  478.  
  479.     IF GENERATING68K THEN
  480.         _EmptyHandle:    OPWORD    $A02B
  481.     ELSE
  482.         IMPORT    EmptyHandle
  483.     ENDIF
  484.  
  485.     IF GENERATING68K THEN
  486.         _HSetRBit:    OPWORD    $A067
  487.     ELSE
  488.         IMPORT    HSetRBit
  489.     ENDIF
  490.  
  491.     IF GENERATING68K THEN
  492.         _HClrRBit:    OPWORD    $A068
  493.     ELSE
  494.         IMPORT    HClrRBit
  495.     ENDIF
  496.  
  497.     IF GENERATING68K THEN
  498.         _MoreMasters:    OPWORD    $A036
  499.     ELSE
  500.         IMPORT    MoreMasters
  501.     ENDIF
  502.  
  503.     IF GENERATING68K THEN
  504.         _BlockMove:    OPWORD    $A02E
  505.     ELSE
  506.         IMPORT    BlockMove
  507.     ENDIF
  508.  
  509.     IF GENERATING68K THEN
  510.         _BlockMoveData:    OPWORD    $A22E
  511.     ELSE
  512.         IMPORT    BlockMoveData
  513.     ENDIF
  514.  
  515.     IF GENERATING68K THEN
  516.         _HGetState:    OPWORD    $A069
  517.     ELSE
  518.         IMPORT    HGetState
  519.     ENDIF
  520.  
  521.     IF GENERATING68K THEN
  522.         _HSetState:    OPWORD    $A06A
  523.     ELSE
  524.         IMPORT    HSetState
  525.     ENDIF
  526.  
  527.     IF GENERATING68K THEN
  528.         _SetApplBase:    OPWORD    $A057
  529.     ELSE
  530.         IMPORT    SetApplBase
  531.     ENDIF
  532.  
  533.     IF GENERATING68K THEN
  534.         _MaxApplZone:    OPWORD    $A063
  535.     ELSE
  536.         IMPORT    MaxApplZone
  537.     ENDIF
  538.  
  539.     IF GENERATING68K THEN
  540.         Macro
  541.         _HoldMemory
  542.             moveq    #0,d0
  543.             dc.w     $A05C
  544.         EndM
  545.     ELSE
  546.         IMPORT    HoldMemory
  547.     ENDIF
  548.  
  549.     IF GENERATING68K THEN
  550.         Macro
  551.         _UnholdMemory
  552.             moveq    #1,d0
  553.             dc.w     $A05C
  554.         EndM
  555.     ELSE
  556.         IMPORT    UnholdMemory
  557.     ENDIF
  558.  
  559.     IF GENERATING68K THEN
  560.         Macro
  561.         _LockMemory
  562.             moveq    #2,d0
  563.             dc.w     $A05C
  564.         EndM
  565.     ELSE
  566.         IMPORT    LockMemory
  567.     ENDIF
  568.  
  569.     IF GENERATING68K THEN
  570.         Macro
  571.         _LockMemoryContiguous
  572.             moveq    #4,d0
  573.             dc.w     $A05C
  574.         EndM
  575.     ELSE
  576.         IMPORT    LockMemoryContiguous
  577.     ENDIF
  578.  
  579.     IF GENERATING68K THEN
  580.         Macro
  581.         _UnlockMemory
  582.             moveq    #3,d0
  583.             dc.w     $A05C
  584.         EndM
  585.     ELSE
  586.         IMPORT    UnlockMemory
  587.     ENDIF
  588.  
  589.     IF GENERATING68K THEN
  590.         _DeferUserFn:    OPWORD    $A08F
  591.     ELSE
  592.         IMPORT    DeferUserFn
  593.     ENDIF
  594.  
  595.     IF GENERATING68K THEN
  596.         Macro
  597.         _DebuggerGetMax
  598.             moveq    #0,d0
  599.             dc.w     $A08D
  600.         EndM
  601.     ELSE
  602.         IMPORT    DebuggerGetMax
  603.     ENDIF
  604.  
  605.     IF GENERATING68K THEN
  606.         Macro
  607.         _DebuggerEnter
  608.             moveq    #1,d0
  609.             dc.w     $A08D
  610.         EndM
  611.     ELSE
  612.         IMPORT    DebuggerEnter
  613.     ENDIF
  614.  
  615.     IF GENERATING68K THEN
  616.         Macro
  617.         _DebuggerExit
  618.             moveq    #2,d0
  619.             dc.w     $A08D
  620.         EndM
  621.     ELSE
  622.         IMPORT    DebuggerExit
  623.     ENDIF
  624.  
  625.     IF GENERATING68K THEN
  626.         Macro
  627.         _DebuggerPoll
  628.             moveq    #3,d0
  629.             dc.w     $A08D
  630.         EndM
  631.     ELSE
  632.         IMPORT    DebuggerPoll
  633.     ENDIF
  634.  
  635.     IF GENERATING68K THEN
  636.         Macro
  637.         _GetPageState
  638.             moveq    #4,d0
  639.             dc.w     $A08D
  640.         EndM
  641.     ELSE
  642.         IMPORT    GetPageState
  643.     ENDIF
  644.  
  645.     IF GENERATING68K THEN
  646.         Macro
  647.         _PageFaultFatal
  648.             moveq    #5,d0
  649.             dc.w     $A08D
  650.         EndM
  651.     ELSE
  652.         IMPORT    PageFaultFatal
  653.     ENDIF
  654.  
  655.     IF GENERATING68K THEN
  656.         Macro
  657.         _DebuggerLockMemory
  658.             moveq    #6,d0
  659.             dc.w     $A08D
  660.         EndM
  661.     ELSE
  662.         IMPORT    DebuggerLockMemory
  663.     ENDIF
  664.  
  665.     IF GENERATING68K THEN
  666.         Macro
  667.         _DebuggerUnlockMemory
  668.             moveq    #7,d0
  669.             dc.w     $A08D
  670.         EndM
  671.     ELSE
  672.         IMPORT    DebuggerUnlockMemory
  673.     ENDIF
  674.  
  675.     IF GENERATING68K THEN
  676.         Macro
  677.         _EnterSupervisorMode
  678.             moveq    #8,d0
  679.             dc.w     $A08D
  680.         EndM
  681.     ELSE
  682.         IMPORT    EnterSupervisorMode
  683.     ENDIF
  684.  
  685. ; StripAddress and Translate24To32 macro to nothing on PowerPC
  686. ;   StripAddress is implemented as a trap in System 6 or later 
  687.     IF SystemSixOrLater  THEN
  688.     IF GENERATING68K THEN
  689.         _StripAddress:    OPWORD    $A055
  690.     ELSE
  691.         IMPORT    StripAddress
  692.     ENDIF
  693.  
  694.     ELSE
  695.     ENDIF
  696.     IF GENERATING68K THEN
  697.         _Translate24To32:    OPWORD    $A091
  698.     ELSE
  699.         IMPORT    Translate24To32
  700.     ENDIF
  701.  
  702.     IF GENERATING68K THEN
  703.         _PtrToXHand:    OPWORD    $A9E2
  704.     ELSE
  705.         IMPORT    PtrToXHand
  706.     ENDIF
  707.  
  708.     IF GENERATING68K THEN
  709.         _HandAndHand:    OPWORD    $A9E4
  710.     ELSE
  711.         IMPORT    HandAndHand
  712.     ENDIF
  713.  
  714.     IF GENERATING68K THEN
  715.         _PtrAndHand:    OPWORD    $A9EF
  716.     ELSE
  717.         IMPORT    PtrAndHand
  718.     ENDIF
  719.  
  720.     IF OLDROUTINENAMES  THEN
  721.     ENDIF
  722.     ENDIF ; __MEMORY__
  723.